home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Forever 4
/
Atari Forever 4.zip
/
Atari Forever 4.iso
/
SERIE_S
/
S_899
/
ALICE
/
ALICE09.TXT
< prev
Wrap
Text File
|
1998-03-14
|
15KB
|
378 lines
ALICE
All-Iconify-Enabler
Version 0.9ß 03.03.1996
von Sven Kopacz
1. Rechtliches
Die Sprüche kennen Sie zwar alle schon, aber lesen Sie sie trotzdem:
Alice ist Freeware, d.h. jeder darf es kostenlos benutzen und
kostenlos weitergeben, ebenso darf Alice kostenlos eigenen Programmen
beigelegt werden.
Allerdings darf eine Weitergabe/Beilage NUR VOLLSTÄNDIG erfolgen,
d.h. dieser Text muß dabei sein!
Uploads in Mailboxen, die keine Download-Gebühren verlangen (z.B. die
Maus-Mailboxen) sind ebenfalls erlaubt.
(Eigentlich ist alles, was hier erlaubt ist, nicht nur erlaubt
sondern ausdrücklich erwünscht:-)
Jede Form der Weitergabe, bei der dem Empfänger Kosten für Alice
entstehen ist VERBOTEN.
2. Wat it denn dat, wat it denn dat??
Alice ist ein TSR ("Terminate and stay resident"), d.h. in diesem
Fall eine Systemerweiterung für den AUTO-Ordner. Ist Alice
installiert, beherrschen alle Applikationen das Iconify.
Voraussetzung dafür ist ein Betriebssystem, das eben dieses Iconify
unterstützt. Z.Zt. sind das meines Wissens:
-MagiC >= V3.0
-MagiCMaC >= 1.2.4
-MultiTOS-Beta
-Geneva
-N.AES
ACHTUNG! Diese Version 0.9ß von Alice läuft NICHT unter MTOS und
Geneva (jedenfalls nicht der ersten öffentlichen Demo), bei N.AES
weiß ich es nicht (wer's probiert, kann mir gerne schreiben, Adresse
s.u.).
Eine Anpassung ist geplant, momentan hab ich aber nicht gerade riesig
Zeit dafür und weiß auch garnicht, ob da überhaupt Bedarf besteht.
Wer also Alice unter anderen Systemen als MagiC/MagiCMaC einsetzen
will, soll sich bitte bei mir melden.
3. Installation und Konfiguration
Kopieren Sie Alice in den AUTO-Ordner, die Position ist egal. Um
Alice zu konfigurieren benötigen Sie die GEM-Version (!) von SETTER.
SETTER ist ursprünglich ein TTP-Programm von Harun Scheutzow, um
verschiedene Programme zu konfigurieren. Markus Kohm hat eine
GEM-Version dieses Programms verfaßt, die außerdem neue Möglichkeiten
zur Konfiguration bietet. Diese erweiterten Möglichkeiten werden von
Alice genutzt, weshalb Sie eben die GEM-Version von SETTER benötigen.
Diese Version liegt dem Alice-Archiv bei.
Ziehen Sie nun einfach das in den AUTO-Ordner kopierte ALICE.PRG auf
SETTER.PRG. SETTER wird gestartet und präsentiert Ihnen in einem
Fenster alle Optionen von Alice. Ich hoffe mal, daß die alle
selbsterklärend sind. Falls es Probleme gibt, schreiben Sie mir,
damit ich in zukünftigen Versionen die Texte entsprechend verbessern
kann.
Haben Sie alles Ihren Wünschen entsprechend eingestellt, starten Sie
Ihren Rechner neu, damit sich Alice installieren kann.
Achja, wenn Sie mal die Anleitung zu SETTER lesen, werden Sie
feststellen, daß Sie Ihre Einstellungen in Alice NICHT bei jedem
Update neu tätigen müssen...
4. Benutzung
Da gibts eigentlich nicht viel zu sagen, das Iconify kennen Sie ja
wahrscheinlich aus Programmen wie Thing, CAT, ConNect u.v.a. Ältere
Programme bieten normalerweise kein Iconify, weshalb sich dieses
OS-Feature IMO schlecht nutzen läßt (es ist schwierig, von etwas zu
profitieren, was man nur ab und zu haben kann). Mit Alice können Sie
nun in allen Programmen die Iconify-Option benutzen, wobei Alice die
komplette Verwaltung der Iconify-Fenster für nicht Iconify-fähige
Applikationen übernimmt.
Falls Sie es noch nicht wissen: Das Fensterelement oben rechts mit
dem kleinen Dreieck ist der "Iconifier" oder "Smaller". Ein Klick
darauf bewirkt, daß das Fenster verkleinert ("ikonisiert") wird und
der komplette Inhalt durch ein Icon ersetzt wird. Halten Sie beim
Klick auf den Iconifier zusätzlich die Control-Taste gedrückt, werden
alle Fenster der zugehörigen Applikation in ein einziges
Iconify-Fenster "verwandelt", das ist das sog. "All-Iconify".
Ein Doppelklick auf ein ikonisiertes Fenster bewirkt ein "Uniconify",
d.h. der ursprüngliche Zustand wird wieder hergestellt.
Auf Fenster, die durch Alice ikonisiert wurden, können Sie außerdem
andere Objekte ziehen ("Drag and Drop"), sofern die beteiligten
Applikationen das VA-Protokoll unterstützen. Das betreffende Programm
verhält sich dann, als hätten Sie das Objekt auf das Icon des
Desktops gezerrt.
(Für Programmierer: VA_DRAGACCWIND wird in VA_START umgewandelt).
Ist ein von Alice ikonisiertes Fenster das oberste Fenster, dann
werden Tastendrücke ignoriert (das wäre sonst zu gefährlich).
5. Icons
Natürlich kann Alice nicht wissen, welchen tatsächlichen Inhalt ein
Fenster hat (z.B. einen Text oder eine Grafik), deshalb werden Sie in
den von Alice ikonisierten Fenstern normalerweise nur eines von vier
Standard-Icons vorfinden:
-Haben Sie ein einzelnes Fenster einer Applikation ikonisiert,
erscheint ein Fenster-Icon
-Haben Sie ein einzelnes Fenster eines Accessories ikonisiert,
erscheint ein Fenster-Icon mit aufgeklapptem Accessory-Menü.
-Haben Sie ein "All-Iconify" bei einer Applikation ausgelöst,
erscheint das Programm-Icon des Original-TOS-Desktops.
-Haben Sie ein "All-Iconify" bei einem Accessory ausgelöst, erscheint
das Programm-Icon des Original-TOS-Desktops mit aufgeklapptem
Accessory-Menü.
Der Fenstertitel bleibt dabei jeweils erhalten und unter dem Icon
erscheint der Name des Programms, zu dem das ikonisierte Fenster
gehört.
6. Mehr Icons?
Da schlappe vier Icons etwas fade sind, wurde in Alice eine
Schnittstelle integriert, die in Zusammenarbeit mit Arno Welzel
entstanden ist. Über diese Schnittstelle haben externe Programme die
Möglichkeit, den Inhalt der ikonisierten Fenster zu zeichnen und
somit für mehr Abwechslung und Information zu sorgen. Für Rainer User
bedeutet das, daß er bei Verwendung des alternativen Desktops Thing
(von Arno Welzel) ab Version 1.0 in den ikonisierten Fenstern ganz
automatisch die Icons vorfindet, die er auch im Desktop für die
jeweiligen Programme angemeldet hat. Na wenn das nichts ist:-)
Wenn Sie einen anderen Desktop benutzen, dann können Sie versuchen,
den Autor dieses Desktops zum Einbau der Schnittstelle zu überreden.
Den passenden Ansprechpartner finden Sie i.d.R. im Info-Dialog oder
in der Anleitung zu Ihrem Desktop.
Programmierer können sich auch einen eigenen Redraw-Server schreiben
(Puristen möchten vielleicht nur den App-Namen in den Fenstern haben,
Multimedia-Anhänger dagegen ganze MPEG-Filmchen abspielen lassen;-),
mehr dazu im Kapitel "Für Programmierer".
7. V0.9ß
Diese Version trägt nicht umsonst die Bezeichnung "Beta". Alice wurde
zwar ausgiebig getestet, dabei trat aber bei einem Tester ein Problem
mit CAT auf, bei dem das Uniconify nicht richtig klappt (das Fenster
bleibt klein und der Inhalt wird erst beim nächsten Redraw geändert).
Wenn Ihnen mit CAT oder mit anderen Programmen ähnliches passiert,
dann teilen Sie mir das bitte mit, vor allem wenn Sie es schaffen,
das ganze irgendwie gezielt zu reproduzieren. Im Moment bin ich
nämlich ziemlich ratlos, woran das liegen könnte, vor allem weil es
bei mir nicht auftritt...
Außerdem läuft Alice noch nicht auf allen Systemen. Daher also das
"Beta".
Irgendwelche anderen Fehlermeldungen i.Z. mit Alice werden natürlich
ebenfalls jederzeit (mehr oder weniger dankend;-) von mir
entgegengenommen.
8. Für Programmierer
...stellen sich jetzt vielleicht folgende Fragen:
-Soll ich in meine Programme Iconify-Unterstützung einbauen?
Das muß natürlich jeder selber wissen. Tatsache ist, daß Alice
weiterentwickelt wird und eine Unterstützung aller Iconify-fähigen
Betriebssysteme vorgesehen ist, prinzipiell kann man es sich also
sparen, in eigenen Programmen Speicher für Iconify-Unterstützung zu
opfern. Andererseits will man vielleicht in Sonderfällen
spezielle Fenster auf keinen Fall ikonisiert bekommen o.ä., dann ist
eine eigene Unterstützung notwendig.
Hinweis: Applikationsmodale Fensterdialoge sind kein Problem,
solange man auf die Nachricht WM_NEWTOPPED/WM_ONTOP für ein anderes
Fensterhandle mit dem Toppen des Dialogfensters reagiert.
Bevor Sie Iconify allerdings nur halblebig einbauen (das ALL_ICONIFY
wird offenbar gerne gemieden), lassen Sie es lieber ganz bleiben
oder bieten Sie zumindest eine optionale Abschaltung dafür an.
-Was muß ich tun, damit Alice meine Programme auf jeden Fall in Ruhe
läßt?
Einfach beim Programmstart ein Fenster mit Iconifier per wind_create
erzeugen (und falls es nicht gleich benötigt wird, danach eben wieder
löschen).
Wann das genau passiert ist unwichtig, wichtig ist nur, daß das
erste mit wind_create erzeugte Fenster einen Iconifier besitzt. Wenn
das in Ihrem Programm sowieso der Fall ist, können Sie alles so
lassen wie es ist.
-Was muß ich tun, damit Alice meine Programme unterstützt.
Nix. Was man aber nicht machen sollte, ist ein wind_create mit
angemeldetem Iconifier. Dann nämlich geht Alice davon aus, daß Ihre
App das Iconify selber kann und hält sich raus (außer bei der
Vergabe der Koordinaten für das ikonisierte Fenster).
-Wie verhalten sich von Alice ikonisierte Fenster für mein Programm?
Für das Programm erscheinen diese Fenster, als würden sie sich nach
wie vor an der alten Position befinden, jedoch von einem anderen
Fenster vollständig verdeckt (d.h. der Redrawbereich hat die
Breite/Höhe 0).
Führt das Programm ein wind_set(WF_TOP) auf ein von Alice
ikonisiertes Fenster aus, so führt dies automatisch zu einem
Uniconify. Befindet sich das Fenster "versteckt" in einem
All-Iconify-Fenster, so wird es aus diesem Fenster "gelöst".
Da das Programm nix vom Iconify mitbekommt, ist es kein Problem,
beim Beenden die Fensterkoordinaten zu speichern. Auch wenn alle
Fenster ikonisiert oder womöglich in einem All-Iconify-Fenster
"versteckt" (und damit geschlossen) sind.
-Sonst noch was?
Ja. Wenn Alice das Iconify übernimmt, übernimmt es auch diverse
Nachrichten, den Redraw etc...In diesem Fall kann es vorkommen, daß
ein event_message oder _multi von der Applikation nicht mehr
bearbeitet werden soll. Alice ändert einen solchen Event daher in
einen Message-Event mit der Nachrichtennummer 0x998 (MSG_NOEVENT). Die
Applikation muß dann nichts weiter machen, als diese Nachricht
einfach zu ignorieren (was normalerweise dadurch geschieht, daß man
seine Programme einfach so läßt, wie sie sind;-)
8.1 Die Schnittstelle für den Redraw-Server:
Wie bereits erwähnt, kann ein anderes Programm den Inhalt der
ikonisierten Fenster zeichnen. Dieses Programm übernimmt damit die
Rolle des Redraw-Servers. Dazu muß sich der Server zunächst bei Alice
anmelden:
1) Der Server sucht den Cookie mit Kennung "ALIC" (wird von Alice
angelegt)
2) Der Cookie enthält als Wert einen Zeiger auf folgende Struktur:
typedef struct
{
long magic; /* Magic - muss 'ALIC' sein */
long version; /* Versionsnummer von Alice */
int redraw_ap_id; /* -1 */
} ALICE_COOKIE;
"version" ist die Versionsnummer+Datum in BCD-Schreibweise. Die
Version 0.9 vom 17.01.1996 ist also am Eintrag "09170196" zu
erkennen.
Nun prüft der Server, ob in "redraw_ap_id" der Wert -1 eingetragen
ist. Ist dies nicht der Fall, hat sich bereits ein anderer Server
angemeldet->Pech.
Ansonsten trägt der Server nun in "redraw_ap_id" seine eigene ap_id
(aus appl_init()) ein.
3) Wenn Alice nun ein Fenster ikonifiziert, schickt es an den Server
folgende Message:
msg[0]=THING_CMD (0x46ff)
msg[1]=<ap_id des Fenstereigners>
msg[2]=0;
msg[3]=AT_WINICONIFY (0x1000)
msg[4/5]=<Zeiger auf Programmnamen ohne Pfad aber mit Extension>
msg[6]=<Fenster-Handle>
msg[7]=reserviert, immer 0
Als Extension gilt:
".APP" oder ".PRG" = GEM-Programm
".ACC" = Accessory
Der Server hat somit die Möglichkeit, intern einen Objektbaum für
den Fensterinhalt aufzubauen.
4) Sobald ein Redraw für <Fenster-Handle> notwendig ist, schickt Alice
eine WM_REDRAW-Message im üblichen Format an den Server.
5) Wenn das Fenster geschlossen oder wieder auf normale Größe
(uniconify) gebracht wird, schickt Alice an den Server folgende
Message:
msg[0]=THING_CMD (0x46ff)
msg[1]=<ap_id des Fenstereigners>
msg[2]=0
msg[3]=AT_WINUNICONIFY (0x1001)
msg[4]=<Fenster-Handle>
msg[5-7]=reserviert, immer 0
Der Server kann nun den Speicher für den evtl. erzeugten
Objektbaum wieder frei geben.
Läßt sich der Fensterinhalt schnell aufbauen (z.B. einfacher Text),
dann kann 3) und 5) einfach ignoriert werden und der Inhalt
"on the fly" beim Eintreffen einer Redraw-Message erzeugt werden.
6) Sollte der Server sich unerwartet beenden, schreibt er in den
Alice-Cookie in 'redraw_ap_id' wieder den Wert -1, damit Alice
weiss, daß der Server nicht mehr aktiv ist.
7) Der Server muß, falls er selbst Fenster benutzt, sein Iconify
selber machen, weil alle seine wind_get-Anfragen von Alice
durchgelassen werden, es also große Probleme mit den von Alice
ikonisierten Fenstern gäbe. Alice meldet in den Serverfenstern auch
keine Iconifier an (auch nicht, wenn in der Konfiguration 'Iconify
für alle Apps übernehmen' gewählt wurde).
9. Kontakt
Ich selbst bin per eMail im Mausnet unter
Sven Kopacz @ LB
zu erreichen. In der Maus LB ist auch immer die neuste Version von
Alice zu finden.
LB MAUS Ludwigsburg
07141-280479
Gastdownload, nicht von 18-20 und 21-23 (Zahler)
Netz, nicht anrufen: 21.10-21.45 und 2.50- 5.30
Per Post geht's auch:
Sven Kopacz
Metzinger Str. 20
70597 Stuttgart
Wer eine Antwort per Post wünscht, legt einen adressierten &
frankierten Rückumschlag bei, für die neuste Alice-Version zusätzlich
eine Diskette (DD oder HD).
Für die netten Leute mit den Spendierhosen hier noch meine
Bankverbindung:
Kto.-Nr. 3213502
BLZ 600 501 01 Landesgirokasse Stuttgart
SETTER (GEM-Version) ist von Markus Kohm (Markus Kohm @ KA2)
THING ist von Arno Welzel (aw@zaphot.augusta.de oder Arno Welzel @ A)
Ein Dankeschön geht außerdem an alle Tester:
Christoph Bartholme
Oliver Buchmann
Andreas Frank
Ulli Hahndorf
Raymund Hemmerling
Andrew Lee
Frank Müller
Richard Quadt
Uwe Seidler
Holger Weets
Arno Welzel
Rainer Wiesenfeller
-Ende-